<?php namespace Home\Controller; 

use Hdphp\Controller\Controller;
// use Home\Model\Lists;
require 'App/Home/Function/functions.php';

class ListsController extends Controller
{
	protected $db;

	//构造函数
	public function __init()
	{
		// $this->db = new Lists;
	}
	
    //列表页显示
    public function lists(){
    	// 检测无这个s就生成这个S
    	if(!isset($_GET['s']))
    	{
    		// 进入当前控制器此方法
    		$this->formaturl();
    	}
    	//通过这个方法分配列表页用到的搜索属性
    	$this->assignCategorySearchAttr();
    	//通过这个方法分配列表页用到的商品
    	$this->assignCategoryGoodsList();

        View::make();
    }

    // 生成对应的搜索连接的S参数
    private function formaturl()
    {
    	// 读取栏目
    	$cat = Db::table('shop_cat')->where('cat_id',$_GET['cat_id'])->first();
    	// 通过类型id拿到对应的属性
    	$attr = Db::table('shop_attr')->where('hd_shop_type_id',$cat['type_id'])->where('show_type',2)->get();
    	// 拼凑 URL
    	$url = __URL__.'&s=';
    	// 拼凑搜索的url的连接格式
    	for($i = 0; $i < count($attr); $i++)
    	{
    		$url .= '0-';
    	}
    	//承上启下，上面检测到没有S参数，那么方法拼凑生成一个
    	//一点列表页就直接在连后加上S参数，模型是全部
    	go(substr($url, 0,-1));
    }
    
    //分配搜索属性到列表页
    private function assignCategorySearchAttr()
    {
    	// 读取栏目
    	// 栏目管理哪里可以选择具体的类型模版，根据具体衣服类型模版进行调用搜索属性
    	$cat = Db::table('shop_cat')->where('cat_id',$_GET['cat_id'])->first();
    	// 通过类型id拿到对应的属性
    	$attr = Db::table('shop_attr')->where('hd_shop_type_id',$cat['type_id'])->where('show_type',2)->get();
    	foreach ($attr as $key => $value)
    	{
    		$attr[$key]['attr_value'] = Db::table('shop_goods_attr')->where('hd_shop_attr_attr_id',$attr[$key]['attr_id'])->groupBy('attr_value')->get();
    	}

    	View::with('searchAttr',$attr);
    }

    //分配需要的商品到列表页
    private function assignCategoryGoodsList()
    {
    	//通过get获取到地址上的s参数拆分
    	$s = explode('-', $_GET['s']);
    	//过滤返回数组，会过滤无值的数组返回有值的键
    	$s = array_filter($s);
    	// 判断无值时候分配出来的商品
    	if(empty($s))
    	{
    		$count = Db::table('shop_goods')->where('cat_id',$_GET['cat_id'])->count();
    		$page = Page::make($count);
    		$goods = Db::table('shop_goods')->where('cat_id',$_GET['cat_id'])->get();
    		View::with('page',$page);
    		View::with('goods',$goods);
    	}
    	else{
    		//合并属性
    		$searchAttr = "'".implode("','",$s)."'";
    		$sql="SELECT count(*) as c FROM ((SELECT * FROM hd_shop_goods_attr WHERE attr_value IN(".$searchAttr.") GROUP BY hd_shop_goods_goods_id HAVING count(*)=".count($s).") AS g)";
    		$d = Db::select($sql);
			$page = Page::make($d[0]['c']);

    		$sql="SELECT * FROM hd_shop_goods JOIN hd_shop_goods_attr ON goods_id=hd_shop_goods_goods_id WHERE attr_value IN(".$searchAttr.") GROUP BY hd_shop_goods_goods_id HAVING count(*)=".count($s)." LIMIT ".Page::limit();
    		$goods = Db::select($sql);
            View::with('page',$page);
    		View::with('goods',$goods);

    	}
    }
}
